import java.util.ArrayList;
import java.util.List;

public class findNum {
    public static void main(String[] args) {
        int limit = 20000; // 可以调整为所需的上限
        List<Integer> primes = findPrimes(limit);

        printPrimes(primes, 5);
    }

    // 找出所有小于或等于 limit 的素数
    public static List<Integer> findPrimes(int limit) {
        List<Integer> primes = new ArrayList<>();
        for (int num = 2; num <= limit; num++) {
            if (isPrime(num)) {
                primes.add(num);
            }
        }
        return primes;
    }

    // 检查一个数字是否是素数
    public static boolean isPrime(int number) {
        if (number <= 1) return false;
        if (number == 2) return true; // 2 是素数
        if (number % 2 == 0) return false; // 排除偶数

        // 只检查到 sqrt(number) 的范围
        for (int i = 3; i <= Math.sqrt(number); i += 2) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }

    // 打印素数，每行 5 个
    public static void printPrimes(List<Integer> primes, int perLine) {
        int count = 0;
        for (int prime : primes) {
            System.out.printf("%6d", prime);
            count++;
            if (count % perLine == 0) {
                System.out.println();
            }
        }
        if (count % perLine != 0) {
            System.out.println(); // 确保最后一行正确换行
        }
    }
}
